from itertools import combinations
n = int(input())
l = [*([i,int(x)] for i,x in enumerate(input().split(),1))]
a = [*combinations(l,3)]
cnt = 1
for x in a:
if(x[0][1]==x[1][1]+x[2][1]):cnt = 0;print(x[0][0],x[1][0],x[2][0]);break
elif(x[1][1]==x[0][1]+x[2][1]):cnt = 0;print(x[1][0],x[0][0],x[2][0]);break
elif(x[2][1]==x[1][1]+x[0][1]):cnt = 0;print(x[2][0],x[1][0],x[0][0]);break
if(cnt):print(-1)
#include <iostream>
#include <algorithm>
#include <map>
using namespace std;
int main() {
int t=1;//cin>>t;
while(t--) {
int n;
cin >> n;
int a[n];
multimap<int, int> mp;
int ctr = 0;
for (int &i: a) {
cin >> i;
mp.emplace(i, ctr++);
}
sort(a, a + n);
auto aa = mp.begin(), b = mp.begin(), c = mp.begin();
bool ok = false;
for (int i = n - 1; i > -1; i--) {
for (int j = i - 1; j > -1; j--) {
for (int k = j - 1; k > -1; k--) {
if (a[j] + a[k] == a[i]) {
aa = mp.find(a[i]);
b = mp.find(a[j]);
c = mp.find(a[k]);
ok = true;
break;
}
if (ok)break;
}
if (ok)break;
}
}
if (!ok){
printf("-1\n");
return 0;
}
if(b == c)b++;
printf("%d %d %d\n",aa->second+1,b->second+1,c->second+1);
}
return 0;
}
528. Random Pick with Weight | 470. Implement Rand10() Using Rand7() |
866. Prime Palindrome | 1516A - Tit for Tat |
622. Design Circular Queue | 814. Binary Tree Pruning |
791. Custom Sort String | 787. Cheapest Flights Within K Stops |
779. K-th Symbol in Grammar | 701. Insert into a Binary Search Tree |
429. N-ary Tree Level Order Traversal | 739. Daily Temperatures |
647. Palindromic Substrings | 583. Delete Operation for Two Strings |
518. Coin Change 2 | 516. Longest Palindromic Subsequence |
468. Validate IP Address | 450. Delete Node in a BST |
445. Add Two Numbers II | 442. Find All Duplicates in an Array |
437. Path Sum III | 436. Find Right Interval |
435. Non-overlapping Intervals | 406. Queue Reconstruction by Height |
380. Insert Delete GetRandom O(1) | 332. Reconstruct Itinerary |
368. Largest Divisible Subset | 377. Combination Sum IV |
322. Coin Change | 307. Range Sum Query - Mutable |